/*
 * Embedded Artists LPC3250 board
 *
 * Copyright 2012 Roland Stigge <stigge@antcom.de>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
#include "lpc32xx.dtsi"

/ {
	model = "Embedded Artists LPC3250 board based on NXP LPC3250";
	compatible = "ea,ea3250", "nxp,lpc3250";
	#address-cells = <1>;
	#size-cells = <1>;

	memory {
		device_type = "memory";
		reg = <0x80000000 0x4000000>;
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		autorepeat;
		button@21 {
			label = "Interrupt Key";
			linux,code = <103>;
			gpios = <&gpio 4 1 0>; /* GPI_P3 1 */
		};
		key1 {
			label = "KEY1";
			linux,code = <1>;
			gpios = <&pca9532 0 0>;
		};
		key2 {
			label = "KEY2";
			linux,code = <2>;
			gpios = <&pca9532 1 0>;
		};
		key3 {
			label = "KEY3";
			linux,code = <3>;
			gpios = <&pca9532 2 0>;
		};
		key4 {
			label = "KEY4";
			linux,code = <4>;
			gpios = <&pca9532 3 0>;
		};
		joy0 {
			label = "Joystick Key 0";
			linux,code = <10>;
			gpios = <&gpio 2 0 0>; /* P2.0 */
		};
		joy1 {
			label = "Joystick Key 1";
			linux,code = <11>;
			gpios = <&gpio 2 1 0>; /* P2.1 */
		};
		joy2 {
			label = "Joystick Key 2";
			linux,code = <12>;
			gpios = <&gpio 2 2 0>; /* P2.2 */
		};
		joy3 {
			label = "Joystick Key 3";
			linux,code = <13>;
			gpios = <&gpio 2 3 0>; /* P2.3 */
		};
		joy4 {
			label = "Joystick Key 4";
			linux,code = <14>;
			gpios = <&gpio 2 4 0>; /* P2.4 */
		};
	};

	leds {
		compatible = "gpio-leds";

		/* LEDs on OEM Board */

		led1 {
			gpios = <&gpio 5 14 1>; /* GPO_P3 14, GPIO 93, active low */
			linux,default-trigger = "timer";
			default-state = "off";
		};

		led2 {
			gpios = <&gpio 2 10 1>; /* P2.10, active low */
			default-state = "off";
		};

		led3 {
			gpios = <&gpio 2 11 1>; /* P2.11, active low */
			default-state = "off";
		};

		led4 {
			gpios = <&gpio 2 12 1>; /* P2.12, active low */
			default-state = "off";
		};

		/* LEDs on Base Board */

		lede1 {
			gpios = <&pca9532 8 0>;
			default-state = "off";
		};
		lede2 {
			gpios = <&pca9532 9 0>;
			default-state = "off";
		};
		lede3 {
			gpios = <&pca9532 10 0>;
			default-state = "off";
		};
		lede4 {
			gpios = <&pca9532 11 0>;
			default-state = "off";
		};
		lede5 {
			gpios = <&pca9532 12 0>;
			default-state = "off";
		};
		lede6 {
			gpios = <&pca9532 13 0>;
			default-state = "off";
		};
		lede7 {
			gpios = <&pca9532 14 0>;
			default-state = "off";
		};
		lede8 {
			gpios = <&pca9532 15 0>;
			default-state = "off";
		};
	};
};

/* 3-axis accelerometer X,Y,Z (or AD-IN instead of Z) */
&adc {
	status = "okay";
};

&i2c1 {
	clock-frequency = <100000>;

	uda1380: uda1380@18 {
		compatible = "nxp,uda1380";
		reg = <0x18>;
		power-gpio = <&gpio 0x59 0>;
		reset-gpio = <&gpio 0x51 0>;
		dac-clk = "wspll";
	};

	eeprom@50 {
		compatible = "atmel,24c256";
		reg = <0x50>;
	};

	eeprom@57 {
		compatible = "atmel,24c64";
		reg = <0x57>;
	};

	pca9532: pca9532@60 {
		compatible = "nxp,pca9532";
		gpio-controller;
		#gpio-cells = <2>;
		reg = <0x60>;
	};
};

&i2c2 {
	clock-frequency = <100000>;
};

&i2cusb {
	clock-frequency = <100000>;

	isp1301: usb-transceiver@2d {
		compatible = "nxp,isp1301";
		reg = <0x2d>;
	};
};

&mac {
	phy-mode = "rmii";
	use-iram;
};

/* Here, choose exactly one from: ohci, usbd */
&ohci /* &usbd */ {
	transceiver = <&isp1301>;
	status = "okay";
};

&sd {
	wp-gpios = <&pca9532 5 0>;
	cd-gpios = <&pca9532 4 0>;
	cd-inverted;
	bus-width = <4>;
	status = "okay";
};

/* 128MB Flash via SLC NAND controller */
&slc {
	status = "okay";

	nxp,wdr-clks = <14>;
	nxp,wwidth = <260000000>;
	nxp,whold = <104000000>;
	nxp,wsetup = <200000000>;
	nxp,rdr-clks = <14>;
	nxp,rwidth = <34666666>;
	nxp,rhold = <104000000>;
	nxp,rsetup = <200000000>;
	nand-on-flash-bbt;
	gpios = <&gpio 5 19 1>; /* GPO_P3 19, active low */

	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		mtd0@00000000 {
			label = "ea3250-boot";
			reg = <0x00000000 0x00080000>;
			read-only;
		};

		mtd1@00080000 {
			label = "ea3250-uboot";
			reg = <0x00080000 0x000c0000>;
			read-only;
		};

		mtd2@00140000 {
			label = "ea3250-kernel";
			reg = <0x00140000 0x00400000>;
		};

		mtd3@00540000 {
			label = "ea3250-rootfs";
			reg = <0x00540000 0x07ac0000>;
		};
	};
};

&uart1 {
	status = "okay";
};

&uart3 {
	status = "okay";
};

&uart5 {
	status = "okay";
};

&uart6 {
	status = "okay";
};
